import axios from "axios";

const api = axios.create({
  baseURL: "http://localhost:8081", // 设置 API 基地址
  timeout: 200000, // 设置超时时间
});

// 添加请求拦截器
api.interceptors.request.use(
  (config) => {
    // 在发送请求之前做些什么
    // 例如：添加 token
    const token = localStorage.getItem("token");
    if (token) {
      config.headers.Authorization = `${token}`;
    }
    return config;
  },
  (error) => {
    // 对请求错误做些什么
    return Promise.reject(error);
  }
);

// 添加响应拦截器
api.interceptors.response.use(
  (response) => {
    // 对响应数据做些什么
    return response.data;
  },
  (error) => {
    // 对响应错误做些什么
    if (error.response) {
      // 请求已发出，但服务器返回状态码不在 2xx 范围内
      console.error("服务器错误", error.response.data);
    } else if (error.request) {
      // 请求已发送但没有收到响应
      console.error("请求超时", error.request);
    } else {
      // 请求在发送过程中发生错误
      console.error("请求错误", error.message);
    }
    return Promise.reject(error);
  }
);

export async function productList(page, size, queryDto) {
  try {
    const response = await api.post(`/product/list/${page}/${size}`, queryDto);

    return response;
  } catch (error) {
    // 处理错误
    console.error("获取产品信息失败:", error);
    throw error;
  }
}

//获取top20
export function productsTop(beginTime, endTime) {
  // 构建查询参数对象
  let params = {};
  if (beginTime) {
    params.beginTime = beginTime;
  }
  if (endTime) {
    params.endTime = endTime;
  }

  // 发起带有查询参数的 GET 请求
  return api.get("/product/top", { params: params });
}

//获取销售数量占比
export function productExchange(beginTime, endTime) {
  // 构建查询参数对象
  let params = {};
  if (beginTime) {
    params.beginTime = beginTime;
  }
  if (endTime) {
    params.endTime = endTime;
  }

  // 发起带有查询参数的GET请求
  return api.get("/product/exchange", { params: params });
}

//获取购买方式占比
export function productsBuyWay(beginTime, endTime) {
  // 构建查询参数对象
  let params = {};
  if (beginTime) {
    params.beginTime = beginTime;
  }
  if (endTime) {
    params.endTime = endTime;
  }
  // 发起带有查询参数的GET请求
  return api.get("/product/buyway", { params: params });
}

// 商品代理人信息查询接口
export function queryProxyUser(productId) {
  if (!productId) {
    return Promise.reject(new Error("商品ID不能为空"));
  }

  return api
    .get(`/product/proxy/get/${productId}`)
    .then((response) => {
      if (response.code === "0") {
        return response.data.list; // 假设返回的数据结构中，代理人列表在 response.data.list 中
      } else {
        throw new Error(response.message); // 抛出异常，包含错误信息
      }
    })
    .catch((error) => {
      console.error("查询商品代理人信息失败:", error);
      throw error; // 重新抛出错误，以便调用者可以捕获并处理
    });
}

//获取商品具体信息
export async function getProductDetails(productId) {
  if (!productId) {
    throw new Error("商品ID不能为空");
  }

  try {
    const response = await api.get(`/product/details/${productId}`); 
    if (response.code === 0) {
      return response.data; // 直接返回 data 对象，因为它已经包含了商品的具体信息
    } else {
      throw new Error(response.message); // 抛出异常，打印错误信息
    }
  } catch (error) {
    console.error("获取商品具体信息失败:", error);
    throw error; // 重新抛出错误，以便调用者可以捕获并处理
  }
}
//上下线接口
export async function productOnline(productId, status) {
  if (!productId || !status) {
    throw new Error("商品ID和状态不能为空");
  }
  try {
    const response = await api.put(`/product/line/${productId}/${status}`);

    if (response.code === "1") {
      return { success: true, message: response.message };
    } else {
      throw new Error(response.message); 
    }
  } catch (error) {
    console.error("商品上下线操作失败:", error);
    throw error; // 重新抛出错误，以便调用者可以捕获并处理
  }
}

//请求审核接口
export async function productNeedVerify(productId) {
  try {
    const response = await api.put(`/product/requireVerify/${productId}`);
    return response; // 这里直接返回response对象，可以在调用处处理具体的code和message
  } catch (error) {
    console.error("商品请求审核失败:", error);
    throw error;
  }
}

// 商品审核通过接口
export async function productVerifyPass(productId) {
  try {
    const response = await api.put(`/product/verify/pass/${productId}`);
    return response;
  } catch (error) {
    console.error("商品审核通过失败:", error);
    throw error;
  }
}

// 商品审核不通过接口
export async function productVerifyUnpass(productId) {
  try {
    const response = await api.put(`/product/verify/unpass/${productId}`);
    return response;
  } catch (error) {
    console.error("商品审核不通过失败:", error);
    throw error;
  }
}

export async function uploadProduct(productAddDTO) {
  try {
    const response = await api.post("/product/upload", productAddDTO);

    // 根据你的接口定义，检查返回的状态码并处理结果
    if (response.code === "0") {
      return response.data; 
    } else {
      // 操作失败，抛出错误
      throw new Error(response.message);
    }
  } catch (error) {
    // 处理错误
    console.error("上传商品信息失败:", error);
    throw error; 
  }
}
